const fs = require('fs').promises;

// 从命令行参数中获取文件路径，忽略第一个两个参数 (node和脚本名称)
const filePaths = process.argv.slice(2);

if(process.argv.length<3){
    console.log('使用方法：node mergeCode.js 要合并的文件1完整路径 ... 要合并的文件名n完整路径');
    process.exit(1);
}

// 定义输出文件的名称
const outputFileName = 'mergedFiles.txt';

// 异步函数用于读取文件并追加到结果中
async function readFileAndAppend(fileContent, filePath) {
  try {
    const data = await fs.readFile(filePath, 'utf8');
    fileContent += data + '\n'; // 每个文件内容后面追加换行符
    return fileContent;
  } catch (err) {
    console.error(`无法读取文件 ${filePath}: ${err.message}`);
    return fileContent;
  }
}

// 合并所有文件内容
async function mergeFiles() {
  let mergedContent = '';
  for (const filePath of filePaths) {
    mergedContent = await readFileAndAppend(mergedContent, filePath);
  }

  // 写入合并后的内容到输出文件
  try {
    await fs.writeFile(outputFileName, mergedContent);
    console.log(`所有文件已合并到 ${outputFileName}`);
  } catch (err) {
    console.error(`写入文件时出错: ${err.message}`);
  }
}

// 执行合并操作
mergeFiles();